import java.io.Serializable;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.ArrayList;


// extends UnicastRemoteObject

public class Catalogue implements InterfaceCatalogue{

	ArrayList <Article> LArticle;
	
	public Catalogue() throws RemoteException{
		this.LArticle= new ArrayList<Article>();

                TypesdArticle typeArticle1 = new TypesdArticle(0,"Article de mauvaise qualite");
                TypesdArticle typeArticle2 = new TypesdArticle(1,"Article d'excelente qualité");
                TypesdArticle typeArticle3 = new TypesdArticle(2,"Article bien mais pas trop mal non plus");

                //int cle, float prix, String desc,TypesdArticle type,String aut, int qte
                LArticle.add(new Article(0,(float) 33.33,"C est vraiment un bon produit",typeArticle1,"HerrChaoul",3333));
                LArticle.add(new Article(1,(float) 47.00,"C est vraiment pas du tout un bon produit",typeArticle2,"HerrChaoul",2));
                LArticle.add(new Article(2,(float) 4,"C'est de la bombe bebe",typeArticle3,"HerrChaoul",13));

	}
	
	public ArrayList <Article> findByType(TypesdArticle type){
		
		ArrayList <Article> Lretour = new ArrayList<Article>();
		
		for(Article m : LArticle){
			if(m.getMontype().equals(type)) Lretour.add(m);
		}
		
		return Lretour;
	}
	
        public ArrayList <Article> findByAutor(String auteur){


            ArrayList <Article> Lretour = new ArrayList<Article>();


            for(Article m : LArticle){
                    if(m.getAuteur().equals(auteur))
                        Lretour.add(m);
            }

            return Lretour;
	}

public ArrayList <Article> findByDesc(String desc){
	
	ArrayList <Article> Lretour = new ArrayList<Article>();
	
	for(Article m : LArticle){
		if(m.getDescription().equals(desc)) Lretour.add(m);
	}
	
	return Lretour;
}

public String getInfoArticle(int id){
	for(Article m : LArticle){
		if(m.getCle()==id){
			return m.getDescription();
		}
	}
	
	return null;
}

public ArrayList <Article> findByPref(){
	//a implementer!!!
	return null;
}

public boolean RemettreArticle(Article art) {

    for(Article article: this.LArticle){
        if(art.getCle()==article.getCle()){
            art.setQuantite(art.getQuantite()+1);
            return true;
            
        }
    }
    return false;
}

public boolean retirerArticle(Article art){
    for(Article article: this.LArticle){
        if(article.getCle()==art.getCle() && article.getQuantite()>0){
            article.setQuantite(article.getQuantite()-1);
            return true;
        }

    }

    return false;
}




}
